const basicConfig = [
  {
    label: '组件类型',
    type: 'type',
    prop: 'type'
  },
  {
    label: '字段名',
    type: 'input',
    prop: 'inputName',
    title: '控件的key值'
  },
  {
    label: '字段别名',
    type: 'input',
    prop: 'aliasName',
    title: '外部接口返回的字段名称'
  },
  {
    label: '默认值',
    type: 'input',
    prop: 'defaultValue',
    title: '初始化表单的默认值'
  },
  {
    label: '标题',
    type: 'input',
    prop: 'label',
    title: '表单的标题'
  },
  {
    label: '排序',
    type: 'input',
    prop: 'sortNo',
    title: '列表和筛选项顺序'
  },
  {
    label: '占位文字',
    type: 'input',
    prop: 'placeholder',
    title: '没有值的时候展示的文本'
  },
  {
    label: '补充说明',
    type: 'textarea',
    prop: 'remark'
  },
  {
    label: '宽度',
    type: 'input',
    prop: 'span',
    title: '表单项的宽度,值为24占满一行'
  },
  {
    label: '能否清空',
    type: 'switch',
    prop: 'allowClear',
    title: '列表项后是否有清空的icon'
  },
  {
    label: '是否隐藏',
    type: 'switch',
    prop: 'isHide',
    title:
      '开启隐藏后,表单将不展示,通常用于过滤条件的占位或者提交表单前的数据占位'
  },
  {
    label: '是否禁用',
    type: 'switch',
    prop: 'disabled',
    title: '开启后控件为禁用状态,无法进行鼠标操作'
  },
  {
    label: '是否必填',
    type: 'switch',
    prop: 'required',
    title: '开启后增加表单必填项的验证'
  },
  {
    label: '是否初始化',
    type: 'switch',
    prop: 'isInitalized',
    title: '初始化的时候会调用请求'
  },
  {
    label: '是否默认列表项',
    type: 'switch',
    prop: 'isDefault',
    title: '开启后将以列的形式展示在列表中'
  },
  {
    label: '是否扩展列表项',
    type: 'switch',
    prop: 'isCustom',
    title: '开启后将以自定义列表项的形式展示在自定义列表项中',
    display: {
      prop: 'isDefault',
      value: false
    }
  },
  {
    label: '是否筛选项',
    type: 'switch',
    prop: 'isFilter',
    title: '开启后将以筛选项的形式展示在表格中'
  },
  {
    label: '是否提交前处理',
    type: 'switch',
    prop: 'isDeal',
    title: '开启后将根据‘联动请求’配置的url请求数据,在表单提交前对数据处理'
  },
  {
    label: '是否提前锁定',
    type: 'switch',
    prop: 'isLock',
    title: '开启后将预弹窗设置值'
  },
  {
    label: 'change回调',
    type: 'input',
    prop: 'changeFuncName',
    title: 'change之后触发回调的钩子'
  },
  {
    label: '超链接地址',
    type: 'input',
    prop: 'herfUrl'
  },
  {
    label: '数据请求',
    type: 'input',
    prop: 'dataUrl',
    title: '源数据'
  },
  {
    label: '联动请求',
    type: 'input',
    prop: 'actionUrl',
    title: '请求数据'
  },
  {
    label: '正则校验',
    type: 'extra',
    prop: 'rules'
  },
  {
    label: '数据参数',
    type: 'extra',
    prop: 'dataParams'
  },
  {
    label: '联动参数',
    type: 'extra',
    prop: 'refParams'
  },
  {
    label: '影响值',
    type: 'extra',
    prop: 'relParams'
  }
];

const inputConfig = basicConfig.concat([
  {
    label: '是否是拆单项',
    type: 'input',
    prop: 'isSubForm',
    title: '用于特殊表单,定制的逻辑会根据此字段进行拆单'
  }
]);

const selectConfig = basicConfig.concat([
  {
    label: '能否自定义',
    type: 'switch',
    prop: 'isCustomize',
    title: '下拉列表是否可以添加自定义项'
  },
  {
    label: '是否联动弹窗',
    type: 'switch',
    prop: 'isPopup',
    title: '下拉列表是否可以添加自定义项'
  },
  {
    label: '是否来自字典表',
    type: 'switch',
    prop: 'isDict',
    title: '数据源是否来自于字典表'
  },
  {
    label: '字典名称',
    type: 'input',
    prop: 'dictionaryType',
    display: {
      prop: 'isDict',
      value: true
    },
    title: '字典项名称'
  }
]);

const datepickerConfig = basicConfig.concat([
  {
    label: '能否选时间',
    type: 'switch',
    prop: 'showTime',
    title: '是否可以选择时分秒'
  },
  {
    label: '开始/结束',
    type: 'select',
    prop: 'disableDate',
    options: [
      {
        label: '开始',
        value: 'start'
      },
      {
        label: '结束',
        value: 'end'
      }
    ]
  },
  {
    label: '值格式化',
    type: 'select',
    prop: 'valueFormat',
    options: [
      {
        label: '年-月-日',
        value: 'YYYY-MM-DD'
      },
      {
        label: '年-月-日 时:分',
        value: 'YYYY-MM-DD HH:mm'
      },
      {
        label: '年-月-日 时:分:秒',
        value: 'YYYY-MM-DD HH:mm:ss'
      }
    ]
  }
]);

const uploadConfig = [
  {
    label: '字段名',
    type: 'input',
    prop: 'inputName',
    title: '控件的key值'
  },
  {
    label: '是否必填',
    type: 'switch',
    prop: 'required',
    title: '开启后增加表单必填项的验证'
  },
  {
    label: '是否禁用',
    type: 'switch',
    prop: 'disabled',
    title: '开启后控件为禁用状态,无法进行鼠标操作'
  },
  {
    label: '标题',
    type: 'input',
    prop: 'label',
    title: '表单的标题'
  },
  {
    label: '上传地址',
    type: 'input',
    prop: 'action',
    title: '文件上传路径'
  },
  {
    label: '文件大小',
    type: 'inputnumber',
    prop: 'size',
    title: '文件大小限制',
    unit: 'MB'
  },
  {
    label: '文件类型',
    type: 'select',
    prop: 'fileType',
    title: '文件类型限制',
    options: [
      {
        label: '图片类型',
        value: 'imageType'
      },
      {
        label: '文件类型',
        value: 'fileType'
      },
      {
        label: '基本类型',
        value: 'basicType'
      }
    ]
  }
];

const autoCompleteConfig = basicConfig.concat([
  {
    label: '能否跳转',
    type: 'switch',
    prop: 'isNav'
  }
]);

const cascaderConfig = basicConfig;

const textareaConfig = basicConfig;

const searchConfig = basicConfig;

const syncConfig = basicConfig;

const calculateConfig = basicConfig;

const titleConfig = [
  {
    label: '标题',
    type: 'input',
    prop: 'label'
  }
];

const optionConfig = [
  {
    label: '数据请求',
    type: 'input',
    prop: 'dataUrl',
    title: '源数据'
  },
  {
    label: '字段名',
    type: 'input',
    prop: 'inputName'
  },
  {
    label: '字段别名',
    type: 'input',
    prop: 'aliasName',
    title: '外部接口返回的字段名称'
  },
  {
    label: '是否隐藏',
    type: 'switch',
    prop: 'isHide'
  },
  {
    label: '是否可以新增',
    type: 'switch',
    prop: 'isNew'
  },
  {
    label: '是否可以导出',
    type: 'switch',
    prop: 'isExport'
  },
  {
    label: '是否可以删除',
    type: 'switch',
    prop: 'isRemove'
  },
  {
    label: '是否获取数据',
    type: 'switch',
    prop: 'syncData'
  },
  {
    label: '导出函数',
    type: 'input',
    prop: 'exportFunc'
  }
];

export default {
  inputConfig,
  datepickerConfig,
  selectConfig,
  uploadConfig,
  autoCompleteConfig,
  titleConfig,
  textareaConfig,
  cascaderConfig,
  optionConfig,
  searchConfig,
  syncConfig,
  calculateConfig
};
